#ifndef MATRIXOPERATIONS_H
#define MATRIXOPERATIONS_H

#include <vector>

class MatrixOperations {
public:
    // 纯虚函数声明，子类需要实现这些方法
    virtual std::vector<std::vector<float>> elementwiseMultiply(const std::vector<std::vector<float>>& matrix1, const std::vector<std::vector<float>>& matrix2) = 0;

    virtual std::vector<std::vector<float>> multiply(const std::vector<std::vector<float>>& matA, const std::vector<std::vector<float>>& matB) = 0;

    virtual std::vector<std::vector<float>> transpose(const std::vector<std::vector<float>>& mat) = 0;

    virtual std::vector<std::vector<float>> subtract(const std::vector<std::vector<float>>& matrixA, const std::vector<std::vector<float>>& matrixB) = 0;
    // 虚析构函数，确保删除接口的指针时能正确调用子类的析构函数
    virtual ~MatrixOperations() = default;
};


#endif // MATRIXOPERATIONS_H
